SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04 |
您所在的位置:网站首页 › ncclient manager timeout › SDN 环境配置及问题解决:Mininet + Ryu + OpenFlow 1.3 + Ubuntu 20.04 |
项目需要,指定了软件版本: Mininet - 2.3 Ryu - 4.34 Ovs - 2.9.8 Openflow - 1.3 Mininet没有 git 先安装 git:sudo apt install git 第三行的 -n3v2.9.8 是指定安装 mininet 核心功能、OpenFlow 1.3、OpenvSwitch 2.9.8。 git clone git://github.com/mininet/mininet cd mininet/util sudo ./install.sh -n3v2.9.8如果报错可能要更新一下: sudo apt update sudo apt upgrade输入 sudo mn 检验是否安装成功: wu@wu-ubuntu:~$ sudo mn *** Creating network *** Adding controller *** Adding hosts: h1 h2 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) *** Configuring hosts h1 h2 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet>输入 exit 即可退出mininet。 这里若报错尝试运行下 sudo apt-get install mininet Ryu没有 pip3 先安装pip3 sudo apt update apt install python3-pippip3 -V 可查看 pip 版本和位置。如果因为 Python2 和 Python3 共存导致无法定位到 pip3,运行以下命令: sudo python3 -m pip install --upgrade pippip 换清华源: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ pip 安装 Ryu按照 github 上的官方说明,如果安装过程中有错误信息,需要先安装 Python 依赖包: sudo apt install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev直接 pip 安装 ryu 4.34 sudo pip3 install ryu==4.34查看版本是否成功: ryu --version功能选配:ryu 的一些功能需要额外的包。 OF-Config 需要 lxml 和 ncclient NETCONF 需要 paramiko BGP speaker(SSH 控制台)需要 paramiko Zebra 协议服务(数据库)需要 SQLAlchemy 如果要使用这些功能,使用安装命令: sudo pip install -r tools/optional-requires git 安装 Ryu发现用 pip 装的 Ryu 没有 GUI 的 HTML 文件,还是得用 git 装。 git clone git://github.com/osrg/ryu.git sudo pip install -r tools/pip-requires cd ryu sudo python setup.py install 启动Ryu直接在任意路径启动 sudo ryu-manager 应该也是可以的,进入安装文件夹不是必须。不过如果要运行某个应用就需要先进 app 文件夹了。 通过命令: sudo pip show ryu可以看到 ryu 安装路径:Location: /usr/local/lib/python3.8/dist-packages cd 进入安装文件夹 cd /usr/local/lib/python3.8/dist-packages/ryu,可以看到下面的文件: wu@wu-ubuntu:/usr/local/lib/python3.8/dist-packages/ryu$ ls app cfg.py contrib exception.py hooks.py lib ofproto services topology base cmd controller flags.py __init__.py log.py __pycache__ tests utils.pycd app 进入 app 文件夹,运行 ryu 管理: sudo ryu-manager我这里报错: ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/home/wu/.local/lib/python3.8/site-packages/eventlet/wsgi.py)查了下,原因是 eventlet 版本问题。使用 pip show eventlet 命令查看版本为 Version: 0.33.0 删除重新安装 0.30.2 版本: sudo pip uninstall eventlet sudo pip install eventlet==0.30.2再次运行成功。 wu@wu-ubuntu:~$ sudo ryu-manager loading app ryu.controller.ofp_handler instantiating app ryu.controller.ofp_handler of OFPHandler由于用 pip 安装,全局都可以使用 ryu-manager 命令(也许吧?) 测试进入到 ryu/app文件夹,ls查看内容: bmpstation.py __pycache__ simple_switch_12.py simple_switch.py cbench.py rest_conf_switch.py simple_switch_13.py simple_switch_rest_13.py conf_switch_key.py rest_firewall.py simple_switch_14.py simple_switch_snort.py example_switch_13.py rest_qos.py simple_switch_15.py simple_switch_stp_13.py gui_topology rest_router.py simple_switch_igmp_13.py simple_switch_stp.py __init__.py rest_topology.py simple_switch_igmp.py simple_switch_websocket_13.py ofctl rest_vtep.py simple_switch_lacp_13.py wsgi.py ofctl_rest.py simple_monitor_13.py simple_switch_lacp.py ws_topology.py这个文件夹下就是各种应用,可以自己编辑,可使用ryu-manager simple_switch.py命令指定运行应用为 simple_switch.py,来检验一下ryu是否安装成功。 打开另一个终端,运行mininet。 sudo mn --controller=remote可以在 ryu 终端看到运行成功。 尝试了下新建路径 ~/RyuApp,把 ryu/app 里的 simple_switch.py 文件单独复制到此路径下,然后在此路径下运行该文件 ryu-manager simple_switch.py 发现也能正常运行。那应该 app 里的文件可以放到任何位置都能运行。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |